package com.example.photography.adapter;

import android.content.Context;

import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.viewpager.widget.PagerAdapter;

import com.example.photography.R;
import com.example.photography.fragment.HomeFragment2;
import com.example.photography.util.UIUtils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * 提供PagerAdapter的实现
 * 如果ViewPager中加载的是Fragment,则提供的Adapter可以继承于具体的：FragmentStatePagerAdapter或FragmentPagerAdapter
 * FragmentStatePagerAdapter:适用于ViewPager中加载的Fragment过多，会根据最近最少使用算法，实现内存中Fragment的清理，避免溢出
 * 如果是页面多，且Fragment的处理相对动态（添加、删除等）时，使用FragmentStatePagerAdapter较为适合。
 * FragmentPagerAdapter:适合少量的页面显示。该类每一个生成的Fragment对象都会储存在内存中，所以适合相对静态、页面少的情况。
 */
public class ViewStatePagerAdapter extends FragmentStatePagerAdapter {
    private List<Fragment> fragments = new ArrayList<>();
    private Context context;
    private List<String> title = new ArrayList<>();
 
    public ViewStatePagerAdapter(Context context, FragmentManager fm, List<Fragment> fragments) {
        super(fm);
        this.context = context;
        this.fragments = fragments;
        notifyDataSetChanged();
    }

//    public ViewStatePagerAdapter(Context context, FragmentManager fm, List<Fragment> fragments,String[] title) {
//        super(fm);
//        this.context = context;
//        this.fragments = fragments;
//        this.title = title;
//        notifyDataSetChanged();
//    }

    public ViewStatePagerAdapter(Context context, FragmentManager fm) {
        super(fm);
        this.context = context;
        notifyDataSetChanged();
    }
 
    @Override
    public Fragment getItem(int arg0) {
 
        return fragments.get(arg0);
    }
    /**
     * 使用这个方式，让页面不缓存，能够在清除fragment的时候对其做了删除
     *
     * @param object
     * @return
     */
    @Override
    public int getItemPosition(Object object) {
        //注意：默认是PagerAdapter.POSITION_UNCHANGED，不会重新加载
        return PagerAdapter.POSITION_NONE;
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        /**
          * 因为一般数组一旦初始化成功就无法进行增删操作
          * 所以我们要将其转List数组
          */
        title = HomeFragment2.hrsigm_arr;
        List<String> home_tab = new ArrayList<String>(Arrays.asList(UIUtils.getStringArr(R.array.home_tab)));
        if (title!=null&&title.size()>0){
            home_tab.addAll(title);
        }
        //todo 放大字体显示不全
        return home_tab.get(position);
    }

    @Override
    public int getCount() {
        return fragments == null? 0 : fragments.size();
    }
}